Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Android): Change implementation of headerConfig prop on Android #1883

Merged
merged 2 commits into from
Sep 6, 2023

Conversation

tboba
Copy link
Member

@tboba tboba commented Sep 6, 2023

Description

It looks like the change introduced in #1825 has also came with a bug where at least Search Bar was not working on Android.
The reason for that has turned out to be the wrong implementation of headerConfig property on Android, which was looking for the first child and assuming that it is ScreenStackHeaderConfig - which was wrong, because the change in #1825 has moved the ScreenStackHeaderConfig to the bottom of the hierarchy.

Fixes not working Search Bar on Android (and some other unknown things maybe?).

Changes

From now Screen#headerConfig will traverse through all children of the View and will check if one of them is ScreenStackHeaderConfig.

Test code and steps to reproduce

You can check Test1166 if SearchBar is working right now; from now the Search Bar in Example section should work properly.

Checklist

  • Ensured that CI passes

@tboba tboba added the Bug Something isn't working label Sep 6, 2023
@tboba tboba requested a review from kkafar September 6, 2023 12:44
@tboba tboba self-assigned this Sep 6, 2023
@tboba tboba removed the Bug Something isn't working label Sep 6, 2023
Copy link
Member

@kkafar kkafar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great catch!

android/src/main/java/com/swmansion/rnscreens/Screen.kt Outdated Show resolved Hide resolved
Copy link
Member

@kkafar kkafar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI 🟢 ➡️ merge

@tboba tboba merged commit 837d603 into main Sep 6, 2023
4 checks passed
@tboba tboba deleted the @tboba/fix-android-searchbar branch September 6, 2023 13:28
renovate bot referenced this pull request in valora-inc/wallet Nov 2, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[react-native-screens](https://github.com/software-mansion/react-native-screens)
| [`^3.25.0` ->
`^3.26.0`](https://renovatebot.com/diffs/npm/react-native-screens/3.25.0/3.26.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-screens/3.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-screens/3.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-screens/3.25.0/3.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-screens/3.25.0/3.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>software-mansion/react-native-screens
(react-native-screens)</summary>

###
[`v3.26.0`](https://github.com/software-mansion/react-native-screens/releases/tag/3.26.0)

[Compare
Source](https://github.com/software-mansion/react-native-screens/compare/3.25.0...3.26.0)

Minor release adding new useAnimatedHeaderHeight and
useReanimatedHeaderHeight hooks, providing fixes for search bar and
introducing internal changes. *Please note that new hooks introduced in
this release are fully functional on Paper, on Fabric there are few edge
cases we are still working on*.

#### What's Changed

#### 🐛 Bug fixes

- Change implementation of `headerConfig` prop on Android by
[@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1883](https://github.com/software-mansion/react-native-screens/pull/1883)
- Change elements visibility on search bar open by
[@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1903](https://github.com/software-mansion/react-native-screens/pull/1903)
- Fix positioning of large header and search bar by
[@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1895](https://github.com/software-mansion/react-native-screens/pull/1895)
- Change implementation of calculating status bar, refactor methods used
on header height change by [@&#8203;tboba](https://github.com/tboba)
in
[https://github.com/software-mansion/react-native-screens/pull/1917](https://github.com/software-mansion/react-native-screens/pull/1917)
- Fix calculating header height when changing status/action bar
visibility by [@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1922](https://github.com/software-mansion/react-native-screens/pull/1922)
- Allow Reanimated Screen to check large header by
[@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1915](https://github.com/software-mansion/react-native-screens/pull/1915)
- Fix issue when emptying nav stack on Windows by
[@&#8203;chrisglein](https://github.com/chrisglein) in
[https://github.com/software-mansion/react-native-screens/pull/1890](https://github.com/software-mansion/react-native-screens/pull/1890)
- Update podspec to use install_modules_dependencies by
[@&#8203;cipolleschi](https://github.com/cipolleschi) in
[https://github.com/software-mansion/react-native-screens/pull/1920](https://github.com/software-mansion/react-native-screens/pull/1920)
- Remove MaxPerm args from JVM invocation by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1888](https://github.com/software-mansion/react-native-screens/pull/1888)

#### 👍 Improvements

- Calculate values of useHeaderHeight natively by
[@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1802](https://github.com/software-mansion/react-native-screens/pull/1802)
- Allow for different fragment types inside ScreenContainer by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1887](https://github.com/software-mansion/react-native-screens/pull/1887)
- Add focused states on page transitions by
[@&#8203;tboba](https://github.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1894](https://github.com/software-mansion/react-native-screens/pull/1894)

#### 🔢 Miscellaneous

- **Create FUNDING.yml by
[@&#8203;aleqsio](https://github.com/aleqsio) in
[https://github.com/software-mansion/react-native-screens/pull/1886](https://github.com/software-mansion/react-native-screens/pull/1886)**
- Migrate from deprecated `RCTEventEmitter` by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1867](https://github.com/software-mansion/react-native-screens/pull/1867)
- Use `require` syntax for resolution of all native components by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1909](https://github.com/software-mansion/react-native-screens/pull/1909)
- Run Android e2e with JDK 17 by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1892](https://github.com/software-mansion/react-native-screens/pull/1892)
- Put timelimit on execution of each workflow by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1893](https://github.com/software-mansion/react-native-screens/pull/1893)
- Trigger e2e tests on JS-only changes by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1910](https://github.com/software-mansion/react-native-screens/pull/1910)
- Update deprecated expo install instructions to `npx expo install` by
[@&#8203;GabrieldosSantosOliveira](https://github.com/GabrieldosSantosOliveira)
in
[https://github.com/software-mansion/react-native-screens/pull/1899](https://github.com/software-mansion/react-native-screens/pull/1899)
- Bump activesupport from 6.1.7.3 to 7.0.7.2 in /TestsExample by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/software-mansion/react-native-screens/pull/1877](https://github.com/software-mansion/react-native-screens/pull/1877)
- Update deps & RN in example apps after release by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1878](https://github.com/software-mansion/react-native-screens/pull/1878)
- Migrate `Example` app & e2e tests to RN 0.72.4 by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1880](https://github.com/software-mansion/react-native-screens/pull/1880)
- Bump library deps to recent versions (including RN) by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1881](https://github.com/software-mansion/react-native-screens/pull/1881)
- Bump library native Android deps & config by
[@&#8203;kkafar](https://github.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1891](https://github.com/software-mansion/react-native-screens/pull/1891)

#### New Contributors

- [@&#8203;chrisglein](https://github.com/chrisglein) made their first
contribution in
[https://github.com/software-mansion/react-native-screens/pull/1890](https://github.com/software-mansion/react-native-screens/pull/1890)
-
[@&#8203;GabrieldosSantosOliveira](https://github.com/GabrieldosSantosOliveira)
made their first contribution in
[https://github.com/software-mansion/react-native-screens/pull/1899](https://github.com/software-mansion/react-native-screens/pull/1899)
- [@&#8203;cipolleschi](https://github.com/cipolleschi) made their
first contribution in
[https://github.com/software-mansion/react-native-screens/pull/1920](https://github.com/software-mansion/react-native-screens/pull/1920)

**Full Changelog**:
software-mansion/react-native-screens@3.25.0...3.26.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 5pm,every weekend" in timezone
America/Los_Angeles, Automerge - "after 5pm,every weekend" in timezone
America/Los_Angeles.

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/valora-inc/wallet).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xOS4yIiwidXBkYXRlZEluVmVyIjoiMzcuMTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: valora-bot <valorabot@valoraapp.com>
Co-authored-by: Silas Boyd-Wickizer <silasbw@gmail.com>
Co-authored-by: Silas Boyd-Wickizer <silas@valora.xyz>
ja1ns pushed a commit to WiseOwlTech/react-native-screens that referenced this pull request Oct 9, 2024
…software-mansion#1883)

## Description

It looks like the change introduced in software-mansion#1825 has also came with a bug
where at least Search Bar was not working on Android.
The reason for that has turned out to be the wrong implementation of
`headerConfig` property on Android, which was looking for the first
child and assuming that it is ScreenStackHeaderConfig - which was wrong,
because the change in software-mansion#1825 has moved the ScreenStackHeaderConfig to the
bottom of the hierarchy.

Fixes not working Search Bar on Android (and some other unknown things
maybe?).

## Changes

From now `Screen#headerConfig` will traverse through all children of the
View and will check if one of them is `ScreenStackHeaderConfig`.

## Test code and steps to reproduce

You can check Test1166 if SearchBar is working right now; from now the
Search Bar in Example section should work properly.

## Checklist

- [ ] Ensured that CI passes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants